Rendering is the process by which graphics objects are converted to pixels. Graphics rendering systems typically use a painters algorithm style of rendering where each object is drawn onto a frame buffer as it arrives. Other graphics rendering systems use a 2-stage approach, where the graphics rendering system firstly converts all incoming objects into some intermediate format for the page, and the second stage renders a scanline at a time.
No matter the type of graphics rendering system, efficiency problems are suffered due to the nature of some of the graphic commands received from application programs. For example, a common drawing application program passes a gradient fill to the graphics rendering system as a group of adjacent overlapping rectangles, each with a slightly different flat colour, to give the impression of a smooth gradient fill. Although true to the nature of the original object, the graphic objects are abundant with redundant data.
In an attempt to reduce the above inefficiencies, it has been proposed to detect simple graphic objects that may be combined into more complex graphic objects, and combining such graphic objects into object groups, thereby removing redundant data and reducing the number of raster operations. An object group, in this context, is used to describe a group of one or more objects that may be combined to form a more efficient (set of) object(s) specific to the graphics rendering system. The combined object(s) may be more complex than the group of single objects, but the graphics rendering system may be able to handle the object group(s) more efficiently. Single objects may be classified as an object group if they can be transformed into a format more desirable to the graphics rendering system than the format in which they were originally represented.
Object group detection schemes are typically used for determining whether or not the objects can be grouped to form a more efficient/desirable set of objects. System designers specifically tailor detection schemes to detect and “correct” these object inefficiencies. The “corrected” graphic object data, although most likely more complex than the original, would be optimised for the specific graphics rendering system, causing the system which includes such a rendering system to be more efficient.
Each detection scheme detects and combines a different grouping of graphic objects to form a complex graphic object. Due to the fact that detection schemes often use one or more of the same objects, conflict amongst detection schemes would occur when the rendering system includes multiple detection schemes.